package operator;

import main.LibraryMain;
import model.User;

import java.util.*;

/**
 * Created by haohao~ on 2015/12/12.
 */
public class UserDao {
    private static HashMap<User,String > users = new HashMap<User,String >();
    static Scanner scanner= new Scanner(System.in);

    //用户注册
    public static void registry() {
        String userName = null;
        String userPassWord = null;
        while (true) {
            System.out.println("请输入要注册的用户名（用户名首位不能以数字开头， 6位英文字母与数组组成）：");
            userName = scanner.nextLine();

            if (userName.matches("^[A-Za-z][A-Za-z1-9_-]+$")) {     //正表达式规定
                break;
            }else {
                System.out.println("用户名不符合规则");
                continue;
            }
        }


        System.out.println("请输入密码:"); // 用户名首位不能以数字开头， 6位英文字母与数组组成
        userPassWord = scanner.nextLine();

        User user = new User(userName, userPassWord);
        users.put(user, userPassWord);
        System.out.println("注册成功！你的用户名为：" + userName + "密码是：" + userPassWord);
        LibraryMain.main(null);       //回到主界面
    }

    //用户注册
    public static void login() {
        boolean isLogin = false;
        boolean adminLogin = false;
        boolean errorName = false;
        boolean errorPassWord = false;

        System.out.println("请输入你的用户名：");
        Scanner s = new Scanner(System.in);
        String name = s.nextLine();
        System.out.println("请输入你的密码：");
        String passWord = s.nextLine();

        Set<Map.Entry<User, String>> entries = users.entrySet();
        Iterator<Map.Entry<User, String>> it = entries.iterator();

        while (it.hasNext()) {
            Map.Entry<User, String> entry = it.next();
            User user = entry.getKey();
            if (user.getName().equals("admin")      //管理员用户
                    && user.getPassWord().equals("654321")) {
                adminLogin = true;
            } else if (user.getName().equals(name)
                    && user.getPassWord().equals(passWord)) {
                isLogin = true;
            } else if (!(user.getName().equals(name))) {
                errorName = true;
            } else if (!(user.getPassWord().equals(passWord))) {
                errorPassWord =true;
            }

        }

        if (adminLogin == true) {
            System.out.println("欢迎管理员!");
            adminLogin();
        } else if (isLogin == true) {
            System.out.println("登陆成功！");
            userLogin();
        } else {
            if (errorName == true) {
                System.out.println("你的用户名错误！");
                login();
            } else if (errorPassWord) {
                System.out.println("密码错误！");
                login();
            } else {
                System.out.println("用户不存在！");
            }
        }
    }

    //一般用户登陆
    public static void userLogin() {
        System.out.println("请选择功能：查看图书（A） 添加图书（B） 修改图书（C） 删除图书（D） 注销（Q）");

        Scanner s = new Scanner(System.in);
        String choose = s.nextLine();

        if ("a".equalsIgnoreCase(choose)) {
            System.out.println("查看图书");
            BookDao.viewBook(BookDao.books);
        }

        if ("b".equalsIgnoreCase(choose)) {
            System.out.println("添加图书");
            BookDao.addBook();
        }

        if ("c".equalsIgnoreCase(choose)) {
            System.out.println("修改图书");
            BookDao.updateBook();
        }

        if ("d".equalsIgnoreCase(choose)) {
            System.out.println("删除图书");
            BookDao.removeBook();
        }
        if ("q".equalsIgnoreCase(choose)) {
            LibraryMain.main(null);
        }

    }

    //修改密码
    private static void updateUser() {
        userView();
        System.out.println("请输入你要修改的用户名");
        Scanner s = new Scanner(System.in);
        String userName = s.next();
        Set<Map.Entry<User, String>> entries = users.entrySet();
        Iterator<Map.Entry<User, String>> it = entries.iterator();

        while (it.hasNext()) {
            Map.Entry<User, String> entry = it.next();
            User user = entry.getKey();
            if (userName.equals(user.getName())) {
                System.out.println(user);
                System.out.println("你要修改什么：用户名（A）  密码（B）");
                String choose = s.next();
                if ("a".equalsIgnoreCase(choose)) {
                    updateUserName(user);
                } else if ("b".equalsIgnoreCase(choose)) {
                    updateUserPassWord(user);
                }
            }
        }
    }

    private static void updateUserPassWord(User user) {
        System.out.println("请输入新的密码");
        Scanner s = new Scanner(System.in);
        String passWord = s.next();
        System.out.println("新的密码为：" + passWord + "你确定要修改吗？ Y/N");
        String choose = s.next();

        if ("y".equalsIgnoreCase(choose)) {
            user.setPassWord(passWord);
            users.put(user, passWord);
            System.out.println("修改成功！" + user);
            adminLogin();
        } else if ("n".equalsIgnoreCase(choose)) {
            updateUser();
        }
    }

    private static void updateUserName(User user) {

        System.out.println("请输入新的用户名");
        Scanner s = new Scanner(System.in);
        String name = s.next();
        System.out.println("新的用户名为：" + name + "你确定要修改吗？ Y/N");
        String choose = s.next();

        if ("y".equalsIgnoreCase(choose)) {
            user.setName(name);
            users.put(user, user.getPassWord());
            System.out.println("修改成功！" + user);
            adminLogin();
        } else if ("n".equalsIgnoreCase(choose)) {
            updateUser();
        }
    }

    //管理员登陆
    public static void adminLogin() {
        System.out.println("请选择功能：查看图书（A） 添加图书（B） 修改图书（C） 删除图书（D）" + "\n" +
                "修改用户（E） 删除用户（H） 查看所有用户（G） 注销（Q）");

        Scanner s = new Scanner(System.in);
        String choose = s.nextLine();

        if ("a".equalsIgnoreCase(choose)) {
            System.out.println("查看图书");
            BookDao.viewBook(BookDao.books);
        }

        if ("b".equalsIgnoreCase(choose)) {
            System.out.println("添加图书");
            BookDao.addBook();
        }

        if ("c".equalsIgnoreCase(choose)) {
            System.out.println("修改图书");
            BookDao.updateBook();
        }

        if ("d".equalsIgnoreCase(choose)) {
            System.out.println("删除图书");
            BookDao.removeBook();
        }

        if ("e".equalsIgnoreCase(choose)) {
            System.out.println("修改用户");
            updateUser();

        }

        if ("g".equalsIgnoreCase(choose)) {
            System.out.println("查看所有用户");
            userView();
        }

        if ("h".equalsIgnoreCase(choose)) {
            System.out.println("删除用户");
            removeUser();
        }

        if ("q".equalsIgnoreCase(choose)) {
            LibraryMain.main(null);
        }
    }

    private static void removeUser() {
    }

    public static void userView() {
        System.out.println("现在注册的用户有："+users);
    }

}
